package Vista;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;


import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import Controlador.Sistema;
import DAO.DAOModelo;
import Modelo.ModeloTipo;



public class frmModelo extends javax.swing.JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel lblMarca;
	private JLabel lblModelo;
	private JLabel lblTipo;
	private JLabel lblMotor;
	private JTextField txtModelo;
	private JButton btnCancelar;
	private JButton btnGuardar;
	private JTextField txtCostoAlquilerDia;
	private JLabel lblCostoKmExcedente;
	private JLabel lblCostoAlquilerDia;
	private JTextField txtKmExcedente;
	private JTextField txtSeguridad;
	private JLabel lblDatosSeguridad;
	private JTextField txtMotor;
	private JComboBox cmbTipo;
	private JTextField txtMarca;
	private String tipo;
	private Sistema elSistema = Sistema.Getinstancia();
	

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				frmModelo inst = new frmModelo("Alta", "", "");
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public frmModelo(String tipo, String marca, String modelo) {
		super();
		initGUI();
		this.tipo = tipo;
		
		if (!tipo.equals("A")) {
			this.ObtenerModelo(marca, modelo);
			
		}
	}
	
	private void ObtenerModelo(String marca, String modelo){
		
		DAOModelo dam = elSistema.ConsultarModelo(marca, modelo);
		if (dam != null) {
			this.txtMarca.setText(dam.getMarca());
			this.txtMotor.setText(dam.getMotor());
			this.txtModelo.setText(dam.getModelo());
			this.txtCostoAlquilerDia.setText(String.valueOf( dam.getCostoAlquilerDia()));
			this.txtKmExcedente.setText(String.valueOf( dam.getCostoKmExcedente()));
			this.txtSeguridad.setText(dam.getDatosSeguridad());
			
			for (int i = 0; i < this.cmbTipo.getItemCount(); i++) {
				if (this.cmbTipo.getItemAt(i).equals(dam.getModeloTipo())) {
					this.cmbTipo.setSelectedIndex(i);
					
				}
			}
			
		}
		
		
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				lblMarca = new JLabel();
				getContentPane().add(lblMarca);
				lblMarca.setText("Marca");
				lblMarca.setBounds(22, 20, 66, 16);
			}
			{
				lblModelo = new JLabel();
				getContentPane().add(lblModelo);
				lblModelo.setText("Modelo");
				lblModelo.setBounds(22, 57, 66, 16);
			}
			{
				lblTipo = new JLabel();
				getContentPane().add(lblTipo);
				lblTipo.setText("Tipo");
				lblTipo.setBounds(22, 91, 45, 16);
			}
			{
				txtMarca = new JTextField();
				getContentPane().add(txtMarca);
				txtMarca.setBounds(117, 17, 220, 23);
			}
			{
				ComboBoxModel cmbTipoModel = 
					new DefaultComboBoxModel(
							new String[] { ModeloTipo.Auto.toString(), ModeloTipo.Camioneta.toString(), ModeloTipo.Van.toString() });
				cmbTipo = new JComboBox();
				getContentPane().add(cmbTipo);
				cmbTipo.setModel(cmbTipoModel);
				cmbTipo.setBounds(117, 88, 220, 23);
			}
			{
				lblMotor = new JLabel();
				getContentPane().add(lblMotor);
				lblMotor.setText("Motor");
				lblMotor.setBounds(22, 126, 56, 16);
			}
			{
				txtMotor = new JTextField();
				getContentPane().add(txtMotor);
				txtMotor.setBounds(117, 123, 220, 23);
			}
			{
				lblDatosSeguridad = new JLabel();
				getContentPane().add(lblDatosSeguridad);
				lblDatosSeguridad.setText("Datos de Seguridad");
				lblDatosSeguridad.setBounds(22, 164, 102, 16);
			}
			{
				txtSeguridad = new JTextField();
				getContentPane().add(txtSeguridad);
				txtSeguridad.setBounds(142, 161, 195, 23);
			}
			{
				lblCostoKmExcedente = new JLabel();
				getContentPane().add(lblCostoKmExcedente);
				lblCostoKmExcedente.setText("Costo Km Excedente");
				lblCostoKmExcedente.setBounds(22, 198, 108, 16);
			}
			{
				lblCostoAlquilerDia = new JLabel();
				getContentPane().add(lblCostoAlquilerDia);
				lblCostoAlquilerDia.setText("Costo Alquiler Dia");
				lblCostoAlquilerDia.setBounds(22, 233, 95, 16);
			}
			{
				txtKmExcedente = new JTextField();
				getContentPane().add(txtKmExcedente);
				txtKmExcedente.setText("0.00");
				txtKmExcedente.setBounds(142, 195, 114, 23);
			}
			{
				txtCostoAlquilerDia = new JTextField();
				getContentPane().add(txtCostoAlquilerDia);
				txtCostoAlquilerDia.setText("0.00");
				txtCostoAlquilerDia.setBounds(142, 230, 114, 23);
			}
			{
				btnGuardar = new JButton();
				getContentPane().add(btnGuardar);
				btnGuardar.setText("Guardar");
				btnGuardar.setBounds(78, 284, 99, 23);
				btnGuardar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnGuardarActionPerformed(evt);
					}
				});
			}
			{
				btnCancelar = new JButton();
				getContentPane().add(btnCancelar);
				btnCancelar.setText("Cancelar");
				btnCancelar.setBounds(231, 284, 98, 23);
				btnCancelar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnCancelarActionPerformed(evt);
					}
				});
			}
			{
				txtModelo = new JTextField();
				getContentPane().add(txtModelo);
				txtModelo.setBounds(117, 54, 220, 23);
			}
			pack();
			this.setSize(400, 365);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	
	
	private void btnCancelarActionPerformed(ActionEvent evt) {
		
		ModeloTipo modeloTipo = ModeloTipo.Auto;
		
		ModeloTipo.valueOf(this.cmbTipo.getSelectedItem().toString());
		
		if (this.tipo.equals("A")) {
			elSistema.CrearModelo(this.txtMarca.getText(), this.txtModelo.getText(),
					this.txtMotor.getText(), this.txtSeguridad.getText(), modeloTipo, Float.valueOf(this.txtCostoAlquilerDia.getText()), Float.valueOf(this.txtKmExcedente.getText()));
		}
		
		if (this.tipo.equals("M")) {
			elSistema.ModificarModelo(this.txtMarca.getText(), this.txtModelo.getText(),
					this.txtMotor.getText(), this.txtSeguridad.getText(), modeloTipo, Float.valueOf(this.txtCostoAlquilerDia.getText()), Float.valueOf(this.txtKmExcedente.getText()));			
		}
		
		this.dispose();
	}
	
	private void btnGuardarActionPerformed(ActionEvent evt) {

		
		if (this.tipo.equals("Alta")) {
			Sistema.Getinstancia().CrearModelo(txtMarca.getText(), txtModelo.getText(), txtMotor.getText(), txtSeguridad.getText(), ModeloTipo.valueOf(cmbTipo.getSelectedItem().toString()),Float.parseFloat(txtCostoAlquilerDia.getText()), Float.parseFloat(txtKmExcedente.getText()));
		}
		
		if (this.tipo.equals("Modificacion")) {
			Sistema.Getinstancia().ModificarModelo(txtMarca.getText(), txtModelo.getText(), txtMotor.getText(), txtSeguridad.getText(), ModeloTipo.valueOf(cmbTipo.getSelectedItem().toString()),Float.parseFloat(txtCostoAlquilerDia.getText()), Float.parseFloat(txtKmExcedente.getText()));
		}
	}

}
